package com.cucn.ingmall.product.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.cucn.common.utils.PageUtils;
import com.cucn.ingmall.product.entity.AttrGroupEntity;
import com.cucn.ingmall.product.vo.AttrGroupRelationVO;
import com.cucn.ingmall.product.vo.AttrGroupWithAttrsVO;
import com.cucn.ingmall.product.vo.SkuItemVO;
import com.cucn.ingmall.product.vo.SpuItemAttrGroupVO;

import java.util.List;
import java.util.Map;

/**
 * 属性分组
 *
 * @author kouchaojie
 * @email kou1688@foxmail.com
 * @date 2021-11-17 16:27:04
 */
public interface AttrGroupService extends IService<AttrGroupEntity> {

    PageUtils queryPage(Map<String, Object> params);

    /**
     * 通过分类id获取属性分组
     *
     * @param params    请求参数
     * @param catelogId 三级分类id
     * @return 统一结果返回
     */
    PageUtils queryPage(Map<String, Object> params, Long catelogId);

    /**
     * 获取属性分组没有关联的其他属性
     * 可以关联的属性一定是对应分组所属的三级分类下的属性
     * 并且没有被本分类下其他分组关联的属性
     *
     * @param params      请求参数
     * @param attrgroupId 属性分组id
     * @return attrgroupId对应在对应分类下的没有关联的属性
     */
    PageUtils getNoRelationAttr(Map<String, Object> params, Long attrgroupId);

    /**
     * 获取分类下所有分组&关联属性
     *
     * @param catelogId 分类id
     * @return 分类下所有分组&关联属性集合
     */
    List<AttrGroupWithAttrsVO> getAttrGroupWithAttrsByCatelogId(Long catelogId);

    /**
     * 查出当前spu对应的所有属性的分组信息以及当前分组下的所有属性对应的值
     *
     * @param spuId     spuId
     * @param catalogId 三级分类id
     * @return spu的属性分组信息以及当前分组下的所有属性对应的值
     */
    List<SpuItemAttrGroupVO> getAttrGroupWithAttrsBySpuId(Long spuId, Long catalogId);
}

